项目app是做蓝牙的,但是最近上架app store被拒,苹果发来的邮件内容如下
Your app uses the “prefs:root=” non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
To resolve this issue, please revise your app to provide the associated functionality using public APIs or remove the functionality using the “prefs:root” or “App-Prefs:root” URL scheme.
看着这个prefs:root的字样,想到了qpp跳转到系统蓝牙页面的功能。所以猜测是因为现在苹果不支持这种api了,在审核的时候发现这字样的代码,就被拒了。
以前做跳转都是下面这样的:
1 | //iOS10 |
而明显,邮件的意思是现在不可以用这样的prefs的描述字段了。
在网上找到解决方法是想办法对prefs:root = Bluetooth字段做转换,这样可以在审核时逃过代码扫描,具体方法如下:
1 | //将字符串转换为16进制 |
关于这个问题,苹果的要求是不可以再使用prefs:root以及App-Prefs:root的接口来做app内部和系统设置的跳转了。现在做app系统设置跳转,官方的只能使用UIApplicationOpenSettingURLString.
并且,明确一点,就是打开url的api也是需要做适配的。
系统版本低于ios10
1 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; |
系统版本高于ios10
1 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil]; |
一些网站上说使用prefs:root配合在info.plist上加入URL scheme值为prefs:的方案可以解决这个上架被拒的问题。但是经过我自己的测试,现在“prefs:root”是苹果不允许的,而且这个在info.plist中加入URL scheme值为prefs:也是不可以的。
也就是说使用“prefs:root”做跳转 以及 在info.plist中加入URL scheme值为prefs:,这两者,只要存在其中一项都会被app store拒绝的。
就是把原本在info.plist中的prefs去掉之后,就可以了!